/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI;

import java.awt.CardLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import modelo.ProcesoAsistencial;
import modelo.tabla.ProcesosAsistencialesTableModel;
import persistencia.BaseDatosProcesosAsistenciales;

/**
 *
 * @author DAM2B
 */
public class PanelProcesosAsistenciales extends javax.swing.JPanel {

    /**
     * Creates new form PanelProcesosAsistenciales
     */
    boolean clickEli = false;
    int filaSeleccionada = -1;
    public PanelProcesosAsistenciales() {
        initComponents();
        
        jtabProcesos.addMouseListener(new MouseAdapter(){

            @Override
            public void mouseClicked(MouseEvent e) {
                int row = jtabProcesos.rowAtPoint(e.getPoint());
                filaSeleccionada = row;
                clickEli = true;
            }
        });
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jtProcesosAsis = new javax.swing.JToolBar();
        jbAnadir = new javax.swing.JButton(new ImageIcon(getClass().getResource("/Imagenes/anadir.png")));
        jbConsultar = new javax.swing.JButton(new ImageIcon(getClass().getResource("/Imagenes/search.png")));
        jpContenedorCentro = new javax.swing.JPanel();
        jpAnadir = new javax.swing.JPanel();
        jtfNombre = new javax.swing.JTextField();
        jlNombre = new javax.swing.JLabel();
        jbAnadirProceso = new javax.swing.JButton();
        jpBuscar = new javax.swing.JPanel();
        jlNombre1 = new javax.swing.JLabel();
        jtfNombreABuscar = new javax.swing.JTextField();
        jbBuscar = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jtabProcesos = new javax.swing.JTable();
        jbModificar = new javax.swing.JButton();
        jbEliminar = new javax.swing.JButton();

        setLayout(new java.awt.BorderLayout());

        jtProcesosAsis.setFloatable(false);
        jtProcesosAsis.setRollover(true);

        jbAnadir.setFocusable(false);
        jbAnadir.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jbAnadir.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jbAnadir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbAnadirActionPerformed(evt);
            }
        });
        jtProcesosAsis.add(jbAnadir);

        jbConsultar.setFocusable(false);
        jbConsultar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jbConsultar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jbConsultar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbConsultarActionPerformed(evt);
            }
        });
        jtProcesosAsis.add(jbConsultar);

        add(jtProcesosAsis, java.awt.BorderLayout.PAGE_START);

        jpContenedorCentro.setLayout(new java.awt.CardLayout());

        jlNombre.setFont(new java.awt.Font("Verdana", 1, 14)); // NOI18N
        jlNombre.setText("Nombre");

        jbAnadirProceso.setText("Añadir");
        jbAnadirProceso.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbAnadirProcesoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jpAnadirLayout = new javax.swing.GroupLayout(jpAnadir);
        jpAnadir.setLayout(jpAnadirLayout);
        jpAnadirLayout.setHorizontalGroup(
            jpAnadirLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpAnadirLayout.createSequentialGroup()
                .addGap(166, 166, 166)
                .addComponent(jlNombre)
                .addGap(45, 45, 45)
                .addComponent(jtfNombre, javax.swing.GroupLayout.PREFERRED_SIZE, 255, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(199, Short.MAX_VALUE))
            .addGroup(jpAnadirLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jpAnadirLayout.createSequentialGroup()
                    .addGap(250, 250, 250)
                    .addComponent(jbAnadirProceso, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGap(251, 251, 251)))
        );
        jpAnadirLayout.setVerticalGroup(
            jpAnadirLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpAnadirLayout.createSequentialGroup()
                .addGap(52, 52, 52)
                .addGroup(jpAnadirLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jlNombre)
                    .addComponent(jtfNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(452, Short.MAX_VALUE))
            .addGroup(jpAnadirLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jpAnadirLayout.createSequentialGroup()
                    .addGap(210, 210, 210)
                    .addComponent(jbAnadirProceso, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(253, Short.MAX_VALUE)))
        );

        jpContenedorCentro.add(jpAnadir, "card2");

        jlNombre1.setFont(new java.awt.Font("Verdana", 1, 14)); // NOI18N
        jlNombre1.setText("Nombre");

        jtfNombreABuscar.setToolTipText("Si no escribes nada buscara todos los procesos asistenciales");
        jtfNombreABuscar.setName(""); // NOI18N

        jbBuscar.setText("Buscar");
        jbBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbBuscarActionPerformed(evt);
            }
        });

        jtabProcesos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Id Proceso Asistencial", "Nombre"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Integer.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(jtabProcesos);
        if (jtabProcesos.getColumnModel().getColumnCount() > 0) {
            jtabProcesos.getColumnModel().getColumn(0).setResizable(false);
            jtabProcesos.getColumnModel().getColumn(1).setResizable(false);
        }

        jbModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/modificar.png")));

        jbEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/borrar.png")));
        jbEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbEliminarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jpBuscarLayout = new javax.swing.GroupLayout(jpBuscar);
        jpBuscar.setLayout(jpBuscarLayout);
        jpBuscarLayout.setHorizontalGroup(
            jpBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpBuscarLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jpBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1)
                    .addGroup(jpBuscarLayout.createSequentialGroup()
                        .addComponent(jlNombre1)
                        .addGap(45, 45, 45)
                        .addComponent(jtfNombreABuscar, javax.swing.GroupLayout.PREFERRED_SIZE, 255, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(76, 76, 76)
                        .addComponent(jbBuscar, javax.swing.GroupLayout.PREFERRED_SIZE, 172, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 97, Short.MAX_VALUE)))
                .addContainerGap())
            .addGroup(jpBuscarLayout.createSequentialGroup()
                .addGap(208, 208, 208)
                .addComponent(jbModificar)
                .addGap(119, 119, 119)
                .addComponent(jbEliminar)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jpBuscarLayout.setVerticalGroup(
            jpBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpBuscarLayout.createSequentialGroup()
                .addGap(35, 35, 35)
                .addGroup(jpBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jlNombre1)
                    .addComponent(jtfNombreABuscar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jbBuscar, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 299, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(45, 45, 45)
                .addGroup(jpBuscarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jbModificar)
                    .addComponent(jbEliminar))
                .addGap(98, 98, 98))
        );

        jpContenedorCentro.add(jpBuscar, "card3");

        add(jpContenedorCentro, java.awt.BorderLayout.CENTER);
    }// </editor-fold>//GEN-END:initComponents

    /*jtabProcesos.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {
        { new Integer(1), null},
        {null, null},
        {null, null},
        {null, null}
    },
    new String [] {
        "Id Proceso Asistencial", "Nombre"
    }
) {
    Class[] types = new Class [] {
        java.lang.Integer.class, java.lang.String.class
    };

    public Class getColumnClass(int columnIndex) {
        return types [columnIndex];
    }
});*/
    
    private void jbAnadirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbAnadirActionPerformed
        // TODO add your handling code here:
        ((CardLayout)jpContenedorCentro.getLayout()).show(jpContenedorCentro, "card2");
    }//GEN-LAST:event_jbAnadirActionPerformed

    private void jbConsultarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbConsultarActionPerformed
        // TODO add your handling code here:
        ((CardLayout)jpContenedorCentro.getLayout()).show(jpContenedorCentro, "card3");
    }//GEN-LAST:event_jbConsultarActionPerformed

    private void jbAnadirProcesoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbAnadirProcesoActionPerformed
        try {
            // TODO add your handling code here:
            String nombreProceso = jtfNombre.getText();
            ProcesoAsistencial proc = new ProcesoAsistencial(nombreProceso);
            BaseDatosProcesosAsistenciales.anadirProcesoAsistencial(proc);
            
            JOptionPane.showMessageDialog(this, "Añadido con exito","Procesos Asistenciales", JOptionPane.INFORMATION_MESSAGE);
        } catch (SQLException ex) {
            Logger.getLogger(PanelProcesosAsistenciales.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_jbAnadirProcesoActionPerformed

    private void jbBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbBuscarActionPerformed
        try {
            // TODO add your handling code here:
            /*
            jtabProcesos.setModel(new javax.swing.table.DefaultTableModel(
            new Object[][]{
            {new Integer(1), null}
            },
            new String[]{
            "Id Proceso Asistencial", "Nombre"
            }
            ) {
            Class[] types = new Class[]{
            java.lang.Integer.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean[]{
            false, true
            };

            public Class getColumnClass(int columnIndex) {
            return types[columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
            return canEdit[columnIndex];
            }
            });
            
            jScrollPane1.setViewportView(jtabProcesos);
            
            if (jtabProcesos.getColumnModel().getColumnCount() > 0) {
            jtabProcesos.getColumnModel().getColumn(0).setResizable(false);
            jtabProcesos.getColumnModel().getColumn(1).setResizable(false);
            }
            */
            String nombreBuscar = jtfNombreABuscar.getText();
            ArrayList<ProcesoAsistencial> listaProcesos = null;
            if(nombreBuscar.length()==0)
                listaProcesos = BaseDatosProcesosAsistenciales.buscarTodosProcesos();
            else
                listaProcesos = BaseDatosProcesosAsistenciales.buscarProcesosPorNombre(nombreBuscar);
            ProcesosAsistencialesTableModel procesosModel = new ProcesosAsistencialesTableModel(listaProcesos);
            jtabProcesos.setModel(procesosModel);
            if(listaProcesos.size()==0){
                JOptionPane.showMessageDialog(this, "No encontro ningun proceso asistencial","Procesos Asistenciales", JOptionPane.INFORMATION_MESSAGE);
            }
            /*
                boolean[] canEdit = new boolean[]{
                    false, true
                };

                public Class getColumnClass(int columnIndex) {
                    return types[columnIndex];
                }

                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return canEdit[columnIndex];
                }
            });

            jScrollPane1.setViewportView(jtabProcesos);

            if (jtabProcesos.getColumnModel().getColumnCount() > 0) {
                jtabProcesos.getColumnModel().getColumn(0).setResizable(false);
                jtabProcesos.getColumnModel().getColumn(1).setResizable(false);
            }
            */
        } catch (SQLException ex) {
            Logger.getLogger(PanelProcesosAsistenciales.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_jbBuscarActionPerformed

    private void jbEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbEliminarActionPerformed
        // TODO add your handling code here:
        if(!clickEli)
            JOptionPane.showMessageDialog(this, "No seleccionaste ningun proceso para eliminar","Procesos Asistenciales", JOptionPane.WARNING_MESSAGE);
        else{
            int op = JOptionPane.showConfirmDialog(jpContenedorCentro, "¿Esta usted seguro de eliminar el proceso asistencial?", "Procesos Asistenciales", JOptionPane.INFORMATION_MESSAGE);

            if (op == JOptionPane.OK_OPTION) {
                int idABorrar = (int)jtabProcesos.getValueAt(filaSeleccionada, 0);
                try {
                    BaseDatosProcesosAsistenciales.borrarProcesoAsistencial(idABorrar);
                    JOptionPane.showMessageDialog(this, "Borrado con exito","Procesos Asistenciales", JOptionPane.INFORMATION_MESSAGE);
                } catch (SQLException ex) {
                    Logger.getLogger(PanelProcesosAsistenciales.class.getName()).log(Level.SEVERE, null, ex);
                }
            } else {
                return;
            }
        }
    }//GEN-LAST:event_jbEliminarActionPerformed

  
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JButton jbAnadir;
    private javax.swing.JButton jbAnadirProceso;
    private javax.swing.JButton jbBuscar;
    private javax.swing.JButton jbConsultar;
    private javax.swing.JButton jbEliminar;
    private javax.swing.JButton jbModificar;
    private javax.swing.JLabel jlNombre;
    private javax.swing.JLabel jlNombre1;
    private javax.swing.JPanel jpAnadir;
    private javax.swing.JPanel jpBuscar;
    private javax.swing.JPanel jpContenedorCentro;
    private javax.swing.JToolBar jtProcesosAsis;
    private javax.swing.JTable jtabProcesos;
    private javax.swing.JTextField jtfNombre;
    private javax.swing.JTextField jtfNombreABuscar;
    // End of variables declaration//GEN-END:variables
}
